﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;


namespace TP2.Lib
{

    // [XmlInclude(typeof(TorpedoSimple))]
     [Serializable]
    public class TorpedoSimple : Proyectil
    {
        const int DANIO_TORPEDOSIMPLE = 100,
                  VIDA_TORPEDOSIMPLE = 1,
                  RADIO_TORPEDOSIMPLE = 1,
                  RAPIDEZ_TORPEDOSIMPLE = 4;

        private TorpedoSimple() { } /*Contructor vacio, lo utiliza la serialización*/
        
        public TorpedoSimple(double[] inicio, double[] final, int[] dimensiones) : base(inicio,dimensiones)
        {
            this.Danio = DANIO_TORPEDOSIMPLE;
            this.Vida = VIDA_TORPEDOSIMPLE;
            this.Radio = RADIO_TORPEDOSIMPLE;
            this.Rapidez = RAPIDEZ_TORPEDOSIMPLE;
            this.VengoDeEnemigo = false;
            this.Recorrido = new MovimientoLineal(inicio, final, this.Rapidez);            
        }

        public override Proyectil Actuar()
        {
            if ((this.Posicion[0] >= this.Dimensiones[0]) | (this.Posicion[0] <= 0) | (this.Posicion[1] >= this.Dimensiones[1]) | (this.Posicion[1] <= 0))
            {
                //Llegue a un borde
                this.ImpactoConBorde();
            }
            else
            {
                //Se mueve
                this.Mover();
            }
            return null;
        }

        private void Mover()
        {
            double[] posicion = new double[3];
            posicion = this.Recorrido.GetSiguientePunto(this.Posicion);
            this.Posicion = posicion;
        }

    }
}
